package cn.zeal4j;

/**
 * @author Administrator
 * @file Java-StandardEdition-Review
 * @create 2020 09 30 10:25
 */
public class DataType {
    public static void main(String[] args) {

        // 这个类的本身也是个类型
        DataType dataType = new DataType();
        System.out.println("dataType -> " + dataType + " type is -> " + typeOf(dataType));

        // 类型转换
        int i = 0;
        System.out.println("i -> " + i + " type is - > " + typeOf(i));

        // boolean b = (boolean) i; 数值型无法强转Boolean

        byte byt = (byte) i; // int类型大过byte 需要强转标记，存在精确损失的可能
        System.out.println("byt -> " + byt + " type is - > " + typeOf(byt));

        short s = 200;
        i = s; // short类型小于int 类型，可以自动转换，不需要特别标记
        System.out.println("s -> " + s + " type is - > " + typeOf(s));


        char c = (char)i; // 强转char会自动变成ASCII处理
        System.out.println("c -> " + c + " type is - > " + typeOf(c));

        // 字符串与数值的转换
        String strHundred = "100";
        Integer intHundred = Integer.valueOf(strHundred);

        // 同样数值转字符串
        String strNumber = "" + 1213;
        String strBoolean = "" + true;
        String strDouble = "" + 12.02;
        String strChar = "" + '啊';
    }

    // 这里只是声明了一个获取变量的引用类型的方法，基本数据类型只能被显示成包装类了
    public static String typeOf(Object obj) {
        return obj.getClass().getName();
    }
}
